﻿using System;

namespace Rarous.TexyNet.Parser.Formatter {
  /// <summary>
  /// Rozhranni pro formatovac Elementu.
  /// </summary>
  /// <typeparam name="TOutput">Typ vystupu.</typeparam>
  /// <typeparam name="TElement">Typ Elementu.</typeparam>
  /// <typeparam name="TConfig">Typ configurace.</typeparam>
  public interface IElementFormatter<TOutput, TElement, TConfig>
    where TElement : Elements.Element {
    /// <summary>
    /// Zformatuje element na vystup danneho typu.
    /// </summary>
    /// <param name="element">Formatovany element.</param>
    /// <returns>Vraci vystup zvoleneho typu.</returns>
    TOutput Format(TElement element);

    /// <summary>
    /// Vraci nebo nastavuje konfiguraci pro danny formatovac.
    /// </summary>
    TConfig Configuration { get; set; }
    }
}